# -*- coding: UTF-8 -*-
'''
@Project ：pythonProject 
@File    ：functionDemo5.py
@Author  ：siwei
@Date    ：2023/11/6 21:17 
@other   ：str.print---->print(str)
'''


# 变量作用域:指变量起作用的范围,局部变量和全局变量
# 局部变量:
# 定义:在函数定义处的参数和函数内部定义的变量
# 作用范围:函数内部,函数执行结束,局部变量的生命周期也结束
def calc(a, b):
    s = a + b
    return s


result = calc(10, 20)
print(result)
# print(a, b, s)      #报错.a,b是函数的参数,参数是局部变量.s是函数中定义的变量,也是局部变量


# 全局变量:
# 定义:函数外定义的变量或函数内部使用global关键字的修饰的变量
# 作用范围:整个程序,程序运行结束,全局变量的生命周期才结束

a = 100  # 函数外定义的变量,全局变量


def calc1(x, y):
    return a + x + y


print(a)  # a是全局变量,可以在函数中使用
print(calc1(10, 20))

print('-' * 30)


def calc2(x, y):
    a = 200  # 这里的a是局部变量,局部变量的名称和全局变量的名称相同
    return a + x + y


print(a)  # 没有调用函数,a是全局变量,100
print(calc2(10, 20))  # 当局部变量的名称和全局变量相同时,调用函数,局部变量的优先级高,200+10+30

print("-" * 20)


def calc3(x, y):
    global z  # z是被global声明的全局变量
    z = 300  # 必须先声明,再赋值
    return z + x + y


print(calc3(10, 20))  # 300+10+20
print(z)  # z是全局变量
